JSONReporter   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 18
dl 0
loc 27
rs 10
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A _generate 0 18 5
A write 0 6 1
1
import fs from 'fs-extra';
2
import { DEFAULT_JSON_OFFSET } from '../constants';
3
import Base from './Base';
4
5
export default class JSONReporter extends Base {
6
    _generate(groups, map) {
7
        const injected = Object.keys(groups)
8
            .map(groupName => ({
9
                group  : groupName,
10
                titles : Object.keys(groups[groupName])
11
                    .map(title => ({
12
                        name    : title,
13
                        actions : groups[groupName][title]
14
                            .map(id => map.get(id))
15
                            .map(action => ({
16
                                request  : action.request,
17
                                response : action.response
18
                            }))
19
                    }))
20
            }));
21
22
        return JSON.stringify(injected, null, DEFAULT_JSON_OFFSET);
23
    }
24
25
    async write(actions) {
26
        const { groups, map } = this._build(actions);
27
        const content = this._generate(groups, map);
28
29
        await fs.writeFile(this.file, content);
30
    }
31
}
32